Systems and methods for providing computing device counts

ABSTRACT

Methods, systems, and computer-readable media for providing computing device counts are disclosed. Exemplary methods include providing a count of computing devices corresponding to an organization, the count of computing devices being responsive to data corresponding to the computing devices, providing a time period for which the count is valid, and providing information on how the computing device count was determined.

TECHNICAL FIELD

This application relates generally to the field of computing devices.More specifically, this application relates to systems and methods forproviding counts of computing devices.

BACKGROUND

Having an accurate count of computing devices in an entity is useful forcomputer system fitness, software billing, and security compliancereporting purposes. There are numerous data sources indicating computingdevice counts in an entity as well as different uses for such counts.Increasing demands for accurate computing device counts have spotlightedsignificant variations in computing device counts and computing devicecount methodology within a company. There is often no clear explanationthat is readily available to account for these variations. Often,requests for verification and reconciliation of computing device countscan be very time consuming. Furthermore, confusion and uncertainty iscreated when different computing device counts are provided by differentpersons or departments within a company. In the past, certain computingdevice count data has been accepted over other computing device countdata based solely on which employee or department provided the data.Furthermore, computing device counts are often published or included inreports without an understanding how the computing device counts wereobtained.

SUMMARY

Exemplary embodiments of systems, methods, and computer program productsfor providing computing device counts are described. One such methodincludes providing a count of computing devices corresponding to anorganization, the count of computing devices being responsive to datacorresponding to the computing devices, providing a time period forwhich the count is valid, and providing information on how the computingdevice count was determined.

A system for providing computing device counts includes a processor andmemory having instructions stored in the memory. The instructions areconfigured to enable the processor to provide a count of computingdevices corresponding to an organization, a time period for which thecount is valid, and information on how the computing device count wasdetermined.

A computer-readable storage medium includes computer-readableinstructions configured to enable a computer to provide a count ofcomputing devices corresponding to an organization, a time period forwhich the count is valid, and information on how the computing devicecount was determined.

Other systems, methods, and/or computer program products according toembodiments will be or become apparent to one with skill in the art uponreview of the following drawings and detailed description. It isintended that all such additional systems, methods, and/or computerprogram products be included within this description, be within thescope of the present invention, and be protected by the accompanyingclaims.

BRIEF DESCRIPTION OF THE DRAWINGS

The components in the figures are not necessarily to scale, emphasisinstead being placed upon illustrating the principles of the invention.In the figures, like reference numerals designate corresponding partsthroughout the different views.

FIG. 1 is a block diagram illustrating a communication system, inaccordance with exemplary embodiments.

FIG. 2 is a flow chart depicting a computing device counting method, inaccordance with exemplary embodiments.

FIG. 3 is a flow chart depicting a reporting method, in accordance withexemplary embodiments.

FIGS. 4A and 4B combine to form a flow chart depicting a computingdevice counting method, in accordance with exemplary embodiments.

FIG. 5 is a flow chart depicting another computing device countingmethod, in accordance with exemplary embodiments.

FIG. 6 is a block diagram illustrating a computing device countingsystem depicted in FIG. 1, in accordance with exemplary embodiments.

DETAILED DESCRIPTION

The following detailed description is directed to methods, systems, andcomputer-readable media for providing computing device counts. In thefollowing detailed description, references are made to the accompanyingdrawings that form a part hereof, and which are shown by way ofexemplary embodiments and implementations.

Exemplary embodiments utilize data sources, data gathering tools, anddata manipulation processes for providing accurate counts of computingdevices for an organization. Note that the systems and methods disclosedherein may also be used to provide accurate counts for other devices orelements for which counts are desired. By properly defining the datasources, data gathering tools, and data manipulation processes, thecomputing device counts can be easily audited and verified. Eachcomputing device count may have one or more specified uses including,for example, for billing and/or software compliance purposes. As usedherein, a computing device may be, for example, a desktop computer, anotebook computer, a server, a network router, a network switch, aspecialized computing device, a mobile computing device, or any otherdevice that uses a processor capable of executing instructions.Illustrative examples of computing device counts include:

-   -   A count of active servers and/or user-computing devices        corresponding to a company or a particular division of the        company.    -   A count of servers and/or user-computing devices that are        serviced by a certain software program and/or software provider.    -   A count of servers and/or user-computing devices that include a        certain software program.    -   A count of active servers and/or user-computing devices relevant        to compliance reporting in connection with a particular        software.

According to exemplary embodiments, a computing device counting processcan be certified to assure a reader of computing device count data thata certain corresponding counting process was used to arrive at thecomputing device count. Approved uses of computing device counts can bespecified as part of a computing device count certification process. Agiven computing device count can then be used in various reports, asappropriate. The various uses or reports may have differing tolerancesfor the age of a given computing device count.

According to exemplary embodiments, a report may indicate whichcomputing device counts in the report are certified. Noting that acomputing device count is certified may result in a report reader beingconfident in the accuracy of the computing device count. Furthermore,inclusion of the date and/or age tolerances of the computing devicecount can help a reader determine if the computing device count is stillvalid and/or reliable. The reader may also be provided with informationto help the reader understand the scope of the computing device countand the methodology that generated such count. This information may beprovided in the report or via another source such as, for example, acompany web-site. Such a web-site may also provide other informationrelated to various certified computing device counts including approveduses for respective counts. For example, the web-site may list reportsin which each certified computing device count may be used. Aquery-based interface may be used to retrieve information regardingvarious certified computing device counts and the reports in which suchcounts may be used.

FIG. 1 is a block diagram depicting a communication system 100. Thecommunication system 100 includes a computing device counting system 101and a data source 102 that are coupled via one or more the computernetworks 103. The computer networks 103 may include, for example, alocal area network (LAN) and/or a wide area network (WAN). The computingdevice counting system 101 retrieves computing device records 104 fromthe data source 102 and uses the computing device records 104 todetermine one or more computing device counts for an organization,according to exemplary embodiments. The computing device counts may bebased on predetermined criteria 105 for the computing device counts, aswill be discussed in more detail below. The computing device countingsystem 101 optionally includes a report generating application 107 forgenerating reports which include one or more computing device countsdetermined by the computing device counting system 101. Alternatively,the report generating application 107 may be implemented by the datasource 102 or by a different computing device (not shown in FIG. 1).

Note that although only one data source, the data source 102, is shownin FIG. 1, exemplary embodiments include communication systems, such asthe communication system 100, having two or more of the data sources 102for providing the respective computing device records 104 to thecomputing device counting system 101. The computing device records 104may also be provided to the computing device counting system 101 viaalternative means such as, for example, computer readable storage mediaor a source directly associated with the computing device countingsystem 101.

The computing device records 104 provided by the data sources 102 may bein the form of databases, spreadsheets, and/or some other type of datastructures. Information provided by the computing device records 104regarding a particular computing device may include, for example, amongothers, the type of computing device (e.g., desktop vs. notebook and/orserver vs. user-computing device), one or more performancecharacteristics of the computing device (e.g., processor speed and/ormemory capacity), operating system type and/or version installed on thecomputing device, other software types and/or versions installed on thecomputing device, when the computing device has been active, whether thecomputing device is being replaced, a date and/or time the computingdevice was logged into a particular system, whether and how thecomputing device is compliant with security requirements, whether and/orwhen certain software upgrades and/or patches were implemented regardingparticular computing device software, a date and/or time the computingdevice was scanned by a particular software (e.g., computer managementor computer security software), business unit to which the computingdevice is assigned, and/or a company that is performing one or morebillable services in connection with the computing device.

Illustrative non-limiting examples of software that may be used toprovide the computing devices records 104 include: Active Directory™(AD), Microsoft Systems Management Server™ (SMS), Eracent™, Nessus™,REM™, Excel™, and MSM™.

Illustrative non-limiting examples, among other, of tools for retrievingdata from the data source 102 include SMS Web Reporting™, EracentReporting™, Structured Query Language (SQL) Server Database™ (DB), SQLServer Reporting Services™, Oracle DB™, SQL™ queries, and applicationprogramming interface (API) calls.

FIG. 2 is a flow chart depicting a computing device counting method 200,in accordance with exemplary embodiments. As indicated in box 201, thecomputing device records 104 are received at the computing devicecounting system 101 from one or more of the data sources 102. Thecomputing device counting system 101 may periodically request thecomputing device records 104 from the data source 102, automaticallyreceive the data records 104 from the data source 102, and/or requestthe computing device records 104 from the data source 102 in response toa request received at the computing device counting system 101. Thecomputing device records 104 provided by the data source 102 may be inthe form of databases, spreadsheets, and/or some other data structures.A count of computing devices that meets one or more predeterminedcriteria 105 is then determined by the computing device countingapplication 106 based on the computing device records 104, as indicatedin box 202. The predetermined criteria 105 may include, for example, atype of computing device, a time period since a computing device wasdetermined to have been active, a type of software used to manage acomputing device, and/or a type of software installed on a computingdevice, and/or a provider of a type of software used by or in connectionwith a computing device. Note that there may be different sets ofpredetermined criteria 105 for various respective computing devicecounting purposes.

In accordance with exemplary embodiments, the computing device countingapplication 106 may determine a count of computing devices using any ora combination of a variety of approaches. For example, the computingdevice counting application 106 may filter out computing device recordentries not meeting each of the predetermined criteria 105 and thencount the remaining computing device record entries. Alternatively, thecomputing device counting application may flag computing device recordentries that meet the predetermined criteria 105 and then count them. Asanother example, the computing device counting application 106 may flagcomputing device record entries that do not meet the predeterminedcriteria 105 and then count the non-flagged computing device recordentries. As yet another example, the computing device countingapplication may use a combination of filtering and flagging to helpdetermine a computing device count.

One or more time periods are then determined for which the computingdevice count is deemed to be valid and/or reliable in connection withcorresponding disclosure objectives, as indicated in box 203. The timeperiod determination may be performed by a user of the computing devicecounting system 101, by the computing device counting application 106,or by the report generating application 107. An actual number ofcomputing devices being counted can be very dynamic due to computingdevices being added to a system, computing devices being removed from asystem, client reporting schedules, and record processing schedules.Therefore, a time period for which a computing device count is deemedvalid and/or reliable depends on an intended use of the computing devicecount. The time period may be based on a requirement in a softwarelicensing contract, on a computer security requirement, on a softwarebilling schedule and/or on how fixed or dynamic a particular computingdevice count is expected to be. Non-limiting examples of time periodsfor which a computing device count is determined to be reliable include,among others, a day, a week, a month, or a year.

FIG. 3 is a flow chart depicting a reporting method 300, in accordancewith exemplary embodiments. As indicated in box 301, a count ofcomputing devices that meet one or more predetermined criteria 105 isinserted into a report. A date on which the count was determined andtime period for which the data is deemed to be reliable are alsoinserted into the report, as indicated in boxes 302 and 303,respectively. Each of the steps 301-303 may be implemented via, forexample, the report generating application 107 that may be executed bythe computing device counting system 101 or by another computing device.

The date and time period associated with a computing device count canhelp a reader determine when or whether a computing device count isvalid and/or reliable. Furthermore, an “as of,” date corresponding to adate the computing device count was calculated can be associated withthe computing device count. The “as of” date enables a reader of thecomputing device count to better determine whether a correspondingcomputing device count is still valid and/or reliable in connection witha certain context within which the computing device count is being used.

FIGS. 4A and 4B combine to form a flow chart depicting a computingdevice counting method 400, in accordance with exemplary embodiments.The steps in the counting method 400 may be performed by, for example,the computing device counting application 106. As indicated in box 401,the computing device records 104 are received from one or more datasources 102. The received computing device records 104 are processed toidentify records for a particular type of computing device, as indicatedin box 402. Types of computing devices based on which computing devicerecords may be identified include, for example, desktop computers,notebook computers, user-computing devices, servers, network routers,network switches, and mobile computing devices. The computing devicerecords 104 are further processed to identify records for computingdevices confirmed to be active over a predetermined time period, asindicated in box 403. A computing device can be confirmed to be activebased on, for example, whether a computing device user used thecomputing device to log into a particular system or whether thecomputing device was scanned by a particular server or software withinthe predetermined time period.

The computing device records 104 are then processed to identify therecords 104 for computing devices managed via a predetermined software,as indicated in box 404. The computing device records 104 are furtherprocessed to identify records for computing devices for which a certainbilling requirement exists, as indicated in box 405. Identifying recordsbased on billing requirements can be performed when a computing devicecount is to be used for billing purposes.

The computing device records 104 are then processed to account forduplicate listings in the computing device records 104, as indicated inbox 406. Accounting for duplicate listings helps to prevent computingdevice counts from being inaccurate due to double-counting. A computingdevice count is then determined based on the computing device recordprocessing, as indicated in box 407. For example, certain of thecomputing device records 104 not meeting certain criteria are eliminatedor flagged such that the records are excluded from a computing devicecount.

The computing device count is then adjusted based on data identifyingcomputing devices being replaced, as indicated in box 408. For example,when a computing device is being replaced, the computing device and thecomputing device's replacement may both be active even though thecomputing device being replaced may soon be deactivated and may nolonger be relevant to various computing device counts. Therefore,accounting for computing device replacements can help provide a moreaccurate count of computing devices for various purposes including, forexample, software licensing. A computing device being replaced and acorresponding replacement computing device may be identified as such inthe computing device records 104.

FIG. 5 is a flow chart depicting a computing device counting method 500,in accordance with exemplary embodiments. The steps in the countingmethod 500 may be performed by, for example, the computing devicecounting application 106. As indicated in box 501, the computing devicerecords 104 are received from one or more data sources 102. Thecomputing device records 104 are processed to identify records forcomputing devices confirmed to be active over a predetermined timeperiod, as indicated in box 502. The computing device records 104 arecross referenced with business units that the computing devices belongto, as indicated in box 503. The computing device records 104 arefurther processed to identify computing devices corresponding tobusiness units for which the computing devices are managed by apredetermined entity, as indicated in box 504. A computing device countbased on the computing device record processing is then determined, asindicated in box 505.

Note that methods depicted in the exemplary flow charts described abovemay be modified to include fewer, additional, and/or different stepswithin the scope of this disclosure. Furthermore, steps depicted in theflow charts may be performed out of the order shown includingsubstantially concurrently, in reverse order, or in a substantiallydifferent order.

FIG. 6 is a block diagram illustrating the computing device countingsystem 101, in accordance with exemplary embodiments. The system 101includes a central processing unit 602 (CPU), a system memory 608,including a random access memory 614 (RAM) and a read-only memory (ROM)616, and a system bus 604 that couples the memory 608 to the CPU 602. Abasic input/output system containing the basic routines that help totransfer information between elements within the system 101, such asduring startup, is stored in the ROM 616. The system 101 furtherincludes a mass storage device 610 for storing an operating system 620and other program modules, which will be described in greater detailbelow.

The mass storage device 610 is connected to the CPU 602 through a massstorage controller (not shown) connected to the bus 604. The massstorage device 610 and its associated computer-readable media providenon-volatile storage for the server 101. Although the description ofcomputer-readable media contained herein refers to a mass storagedevice, such as a hard disk or CD-ROM drive, it should be appreciated bythose skilled in the art that computer-readable media can be anyavailable media that can be accessed by the server 101.

By way of example, and not limitation, computer-readable media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules orother data. For example, computer-readable media includes, but is notlimited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid statememory technology, CD-ROM, digital versatile disks (DVD), HD-DVD,BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othermedium which can be used to store the desired information and which canbe accessed by the server 101.

According to various embodiments, the system 101 may operate in anetworked environment using logical connections to remote computers anddata sources 102, through a network, such as the communications network103. The system 101 may connect to the network 103 through a networkinterface unit 606 connected to the bus 604. It should be appreciatedthat the network interface unit 606 may also be utilized to connect toother types of networks and remote computer systems. The system 101 mayalso include an input/output controller 612 for receiving and processinginput from a number of other devices, including a keyboard, mouse, orelectronic stylus (not shown in FIG. 6). Similarly, an input/outputcontroller may provide output to a display screen, a printer, or othertype of output device (also not shown in FIG. 6).

As mentioned briefly above, a number of program modules and data filesmay be stored in the mass storage device 610 and RAM 614 of the system101, including the operating system 620 suitable for controlling theoperation of the system 101. The mass storage device 610 and RAM 614 mayalso store one or more program modules. In particular, the mass storagedevice 610 and the RAM 614 may store a computing device countingapplication 106. Functionality provided by the computing device countingapplication 106 includes, for example, retrieving computing devicerecords, such as the computing device records 104, and analyzing suchrecords to determine counts of computing devices that meet certaincriteria. The computing device counting application 106 may also beconfigured to store and provide information on how various computingdevice counts were determined and during what time periods suchcomputing device counts are deemed to be valid. Other program modulesmay also be stored in the mass storage device 610 and utilized by thesystem 101.

Although the subject matter presented herein has been described inconjunction with one or more particular embodiments and implementations,it is to be understood that the embodiments defined in the appendedclaims are not necessarily limited to the specific structure,configuration, or functionality described herein. Rather, the specificstructure, configuration, and functionality are disclosed as exampleforms of implementing the claims. Various modifications and changes maybe made to the subject matter described herein without following theexample embodiments and applications illustrated and described, andwithout departing from the true spirit and scope of the embodiments,which is set forth in the following claims.

What is claimed is:
 1. A computer-implemented method for providingcomputing device counts, comprising: auditing computing devicesexecuting a software program under license from a software provider;retrieving computing device records associated with an organization thatare stored in memory; filtering the computing device records to removerecords not associated with the software program; counting serversassociated with the organization that store the software program toprovide a numerical count of computing devices executing the softwareprogram; counting mobile devices associated with the organization thatstore the software program to provide the numerical count of thecomputing devices executing the software program; determiningreplacement of one of the computing devices executing the softwareprogram; identifying a replacement device that replaces the one of thecomputing devices; identifying both the one of the computing devices andthe replacement device in the computing device records; identifying adouble-count between the one of the computing devices and thereplacement device in the computing device records; adjusting thedouble-count in the numerical count of computing devices; providing atime period for which the numerical count is valid; providinginformation on how the numerical count was determined; publishing thenumerical count to a website; and listing reports in the website forwhich the numerical count may be used.
 2. The method of claim 1, furthercomprising counting notebook computers associated with the organizationthat store the software program to provide the numerical count of thecomputing devices executing the software program.
 3. The method of claim1, further comprising filtering the computing device records to removerecords not associated with a version of the software program.
 4. Themethod of claim 1, further comprising filtering the computing devicerecords to remove records not associated with an operating system thatexecutes the software program.
 5. The method of claim 1, furthercomprising reporting the time period to the website.
 6. The method ofclaim 1, further comprising reporting a date to the website on which thenumerical count was generated.
 7. The method of claim 1, furthercomprising billing an amount responsive to the numerical count.
 8. Asystem for providing computing device counts, comprising: a processor;and memory storing instructions that when executed causes the processorto perform operations, the operations comprising: auditing computingdevices executing a software program under license from a softwareprovider; retrieving computing device records associated with anorganization; filtering the computing device records to remove recordsnot associated with the software program; counting servers associatedwith the organization that store the software program to provide anumerical count of computing devices executing the software program;counting mobile devices associated with the organization that store thesoftware program to provide the numerical count of the computing devicesexecuting the software program; determining replacement of one of thecomputing devices executing the software program; identifying areplacement device that replaces the one of the computing devices;identifying both the one of the computing devices and the replacementdevice in the computing device records; identifying a double-countbetween the one of the computing devices and the replacement device inthe computing device records; adjusting the double-count in thenumerical count of computing devices; providing a time period for whichthe numerical count is valid; providing information on how the numericalcount was determined; publishing the numerical count to a website; andlisting reports in the website for which the numerical count may beused.
 9. The system of claim 8, wherein the operations further comprisecounting notebook computers associated with the organization that storethe software program to provide the numerical count of the computingdevices executing the software program.
 10. The system of claim 8,wherein the operations further comprise filtering the computing devicerecords to remove records not associated with a version of the softwareprogram.
 11. The system of claim 8, wherein the operations furthercomprise filtering the computing device records to remove records notassociated with an operating system that executes the software program.12. The system of claim 8, wherein the operations further comprisereporting the time period to the website.
 13. The system of claim 8,wherein the operations further comprise reporting a date on which thenumerical count was generated.
 14. A memory storing instructions thatwhen executed cause a processor to perform operations, the operationscomprising: auditing computing devices executing a software programunder license from a software provider; retrieving computing devicerecords from memory that are associated with an organization; filteringthe computing device records to remove records not associated with thesoftware program; counting servers described in filtered computingdevice records that store the software program to provide a numericalcount of computing devices executing the software program; countingmobile devices described in the filtered computing device records thatstore the software program to provide the numerical count of thecomputing devices executing the software program; determiningreplacement of one of the computing devices executing the softwareprogram; identifying a replacement device that replaces the one of thecomputing devices; identifying both the one of the computing devices andthe replacement device in the computing device records; identifying adouble-count between the one of the computing devices and thereplacement device in the computing device records; adjusting thedouble-count in the numerical count of computing devices; providing atime period for which the numerical count is valid; providinginformation on how the numerical count was determined; publishing thenumerical count to a website; and listing reports in the website forwhich the numerical count may be used.
 15. The memory of claim 14,wherein the operations further comprise counting notebook computersdescribed in the filtered computing device records that store thesoftware program to provide the numerical count of the computing devicesexecuting the software program.
 16. The memory of claim 15, wherein theoperations further comprise instructions for filtering the computingdevice records to remove records not associated with a version of thesoftware program.
 17. The memory of claim 14, wherein the operationsfurther comprise billing an amount responsive to the numerical count.